package in.lib.handler.base; import in.lib.manager.UserManager; import in.rob.client.AuthenticateActivity; import java.lang.ref.WeakReference; import lombok.Getter; import lombok.Setter; import android.content.Context; import android.content.Intent; import android.support.v4.app.Fragment; import android.text.TextUtils; public abstract class RobinResponseHandler<T extends Fragment> extends ResponseHandler { protected WeakReference<T> fragment; @Getter private Context context; @Getter @Setter private String responseKey = ""; public RobinResponseHandler(Context c) { this.context = c; } public T getFragment() { if (fragment == null) { return null; } return fragment.get(); } public void attach(T f) { this.fragment = new WeakReference<T>(f); } /** * This should only be called when the response handler is finished */ public void detach() { this.context = null; this.fragment = null; } @Override public void onFinish() { super.onFinish(); if (getConnectionInfo().responseCode == 401 && context != null && !TextUtils.isEmpty(UserManager.getAccessToken())) { Intent auth = new Intent(context, AuthenticateActivity.class); UserManager.logout(context); auth.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); auth.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); auth.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(auth); return; } } }